﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

public partial class NhanVien : System.Web.UI.Page
{

    SqlParameter[] p;
    clsXuLy ex = new clsXuLy();
    string frmName = "frmNhanVien";
    static int f_SuDung = 0, f_Them = 0, f_Sua = 0, f_Xoa = 0, f_XemTatCa = 0, f_InBaoCao = 0;
    public string Header = System.Configuration.ConfigurationSettings.AppSettings["Header"].ToString();
    static DataTable dt;
    protected void Page_Load(object sender, EventArgs e)
    {
        if (string.IsNullOrEmpty(Convert.ToString(Session["IDUser"])))
            gstGetMess("Hết phiên làm việc, vui lòng đăng nhập để tiếp tục", "Default.aspx");
        else
        {
            if (!IsPostBack)
            {

                


                string idnguoidung = Session["IDUser"].ToString();
                //  string sql = "select SuDung,Them,Sua,Xoa,InBaoCao,XemTatCa from XDAPhanQuyen where IDnguoidung='" + idnguoidung + "' and tag='" + frmName + "'";
                p = new SqlParameter[2];
                p[0] = new SqlParameter("@idnguoidung", idnguoidung);
                p[0].SqlDbType = SqlDbType.NVarChar;
                p[1] = new SqlParameter("@tag", frmName);
                p[1].SqlDbType = SqlDbType.NVarChar;
                DataTable dt2 = ex.GetData("sp_xdacacchucnang_list", p);
                if (dt2.Rows.Count > 0)
                {
                    f_SuDung = int.Parse(dt2.Rows[0]["SuDung"].ToString());
                    f_Them = int.Parse(dt2.Rows[0]["Them"].ToString());
                    f_Sua = int.Parse(dt2.Rows[0]["Sua"].ToString());
                    f_Xoa = int.Parse(dt2.Rows[0]["Xoa"].ToString());
                    f_InBaoCao = int.Parse(dt2.Rows[0]["InBaoCao"].ToString());
                    f_XemTatCa = int.Parse(dt2.Rows[0]["XemTatCa"].ToString());
                }
                if (f_SuDung.Equals(1))
                {
                    Title = "Quản lý nhân viên | " + Header;
                    LoadChucVu();
                    LoadBoPhan();
                    LoadTramTron(dlTramTron);
                    btnCancel_Click(sender, e);

                }
                else
                    gstGetMess("Bạn không có quyền xem trang này", "Home.aspx");

            }
        }
    }
    protected void GV_RowCommand(object sender, GridViewCommandEventArgs e)
    {
        string ID = e.CommandArgument.ToString();
        hdID.Value = ID;
        Guid gID = new Guid(ID);
        p = new SqlParameter[1];
        p[0] = new SqlParameter("@IDs", gID);
        p[0].SqlDbType = SqlDbType.UniqueIdentifier;

        if (e.CommandName.Equals("Select"))
        {
            DataTable dt = ex.GetData("sp_xdanhanvien_ListByID", p);
            if (dt.Rows.Count > 0)
            {
                try
                {
                    txttennhanvien.Text = dt.Rows[0]["hoten"].ToString();
                    txtdiachi.Text = dt.Rows[0]["diachi"].ToString();
                    txtcmt.Text = dt.Rows[0]["socmt"].ToString();
                    txtngaycap.Text = dt.Rows[0]["ngaycap"].ToString();
                    txtnoicap.Text = dt.Rows[0]["noicap"].ToString();
                    txtngayvaolamviec.Text = dt.Rows[0]["ngayvaolamviec"].ToString();
                    txtngayketthuclamviec.Text = dt.Rows[0]["ngayketthuclamviec"].ToString();
                    drChucVu.SelectedValue = dt.Rows[0]["machucvu"].ToString();
                    drBophan.SelectedValue = dt.Rows[0]["mabophan"].ToString();
                    dlTramTron.SelectedValue = dt.Rows[0]["tramtron"].ToString();
                    ckBaoHiem.Checked = dt.Rows[0]["baohiem"].ToString().Equals("1");
                    cknhanvienthoivu.Checked = dt.Rows[0]["thoivu"].ToString().Equals("1");
                }
                catch (Exception ax)
                {
                    gstGetMess("Có lỗi trong quá trình xem, xem trong file log", "");
                    ex.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tNhân viên\t" + ax.Message);
                }

            }
            btncapnhat.Visible = true;
            btnSave.Visible = false;
        }
        else
            if (e.CommandName.Equals("Del"))
            {
                if (f_Xoa.Equals(1))
                {
                    try
                    {
                        ex.ExecuteNonQuerry("sp_xdanhanvien_Del", p);
                        btnCancel_Click(sender, e);
                        gstGetMess("Xóa thành công", "");
                    }
                    catch (Exception ax)
                    {
                        //gstGetMess("Có lỗi trong quá trình xóa, xem trong file log", "");
                        ex.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tNhân viên\t" + ax.Message);
                        gstGetMess(ax.Message, "");
                    }
                }
                else
                    gstGetMess("Bạn không có quyền xóa dữ liệu trên trang này", "");
            }
    }
    protected void btnAdd_Click(object sender, EventArgs e)
    {
        if (f_Them.Equals(1))
        {
            try
            {
                p = new SqlParameter[16];
                p[0] = new SqlParameter("@IDs", Guid.NewGuid());
                p[0].SqlDbType = SqlDbType.UniqueIdentifier;
                p[1] = new SqlParameter("@HoTen", txttennhanvien.Text.Trim());
                p[1].SqlDbType = SqlDbType.NVarChar;
                p[2] = new SqlParameter("@BoPhan", GetGuidDrop(drBophan));
                p[2].SqlDbType = SqlDbType.UniqueIdentifier;
                p[3] = new SqlParameter("@ChucVu", GetGuidDrop(drChucVu));
                p[3].SqlDbType = SqlDbType.UniqueIdentifier;
                p[4] = new SqlParameter("@DiaChi", txtdiachi.Text.Trim());
                p[4].SqlDbType = SqlDbType.NVarChar;
                p[5] = new SqlParameter("@SoCMT", txtcmt.Text.Trim());
                p[5].SqlDbType = SqlDbType.VarChar;
                p[6] = new SqlParameter("@NgayCap", ex.GetNgayThang(txtngaycap.Text.Trim()));
                p[6].SqlDbType = SqlDbType.SmallDateTime;
                p[7] = new SqlParameter("@NoiCap", txtnoicap.Text.Trim());
                p[7].SqlDbType = SqlDbType.NVarChar;
                p[8] = new SqlParameter("@NgayVaoLamViec", ex.GetNgayThang(txtngayvaolamviec.Text.Trim()));
                p[8].SqlDbType = SqlDbType.SmallDateTime;
                p[9] = new SqlParameter("@NgayKetThucLamViec", ex.GetNgayThang(txtngayketthuclamviec.Text.Trim()));
                p[9].SqlDbType = SqlDbType.SmallDateTime;
                p[10] = new SqlParameter("@NgayTao", DateTime.Now);
                p[10].SqlDbType = SqlDbType.SmallDateTime;
                p[11] = new SqlParameter("@NguoiTao", Session["user"].ToString());
                p[11].SqlDbType = SqlDbType.NVarChar;
                p[12] = new SqlParameter("@Del", 1);
                p[12].SqlDbType = SqlDbType.Int;
                p[13] = new SqlParameter("@TramTron", ex.GetGuid(dlTramTron.SelectedValue));
                p[13].SqlDbType = SqlDbType.UniqueIdentifier;
                p[14] = new SqlParameter("@BaoHiem", ckBaoHiem.Checked?1:0);
                p[14].SqlDbType = SqlDbType.Int;
                p[15] = new SqlParameter("@ThoiVu", cknhanvienthoivu.Checked ? 1 : 0);
                p[15].SqlDbType = SqlDbType.Int;
                ex.ExecuteNonQuerry("sp_xdanhanvien_Add", p);
                btnCancel_Click(sender, e);
                gstGetMess("Lưu thành công", "");
            }
            catch (Exception ax)
            {
                gstGetMess("Có lỗi trong quá trình lưu, xem trong file log", "");
                ex.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tNhân viên\t" + ax.Message);
            }
        }
        else
            gstGetMess("Bạn không có quyền thêm dữ liệu trên trang này", "");
    }
    protected void btnUpdate_Click(object sender, EventArgs e)
    {
        if (f_Sua.Equals(1))
        {
            try
            {
                Guid gID = new Guid(hdID.Value);
                p = new SqlParameter[16];
                p[0] = new SqlParameter("@IDs", gID);
                p[0].SqlDbType = SqlDbType.UniqueIdentifier;
                p[1] = new SqlParameter("@HoTen", txttennhanvien.Text.Trim());
                p[1].SqlDbType = SqlDbType.NVarChar;
                p[2] = new SqlParameter("@BoPhan", GetGuidDrop(drBophan));
                p[2].SqlDbType = SqlDbType.UniqueIdentifier;
                p[3] = new SqlParameter("@ChucVu", GetGuidDrop(drChucVu));
                p[3].SqlDbType = SqlDbType.UniqueIdentifier;
                p[4] = new SqlParameter("@DiaChi", txtdiachi.Text.Trim());
                p[4].SqlDbType = SqlDbType.NVarChar;
                p[5] = new SqlParameter("@SoCMT", txtcmt.Text.Trim());
                p[5].SqlDbType = SqlDbType.VarChar;
                p[6] = new SqlParameter("@NgayCap", ex.GetNgayThang(txtngaycap.Text.Trim()));
                p[6].SqlDbType = SqlDbType.SmallDateTime;
                p[7] = new SqlParameter("@NoiCap", txtnoicap.Text.Trim());
                p[7].SqlDbType = SqlDbType.NVarChar;
                p[8] = new SqlParameter("@NgayVaoLamViec", ex.GetNgayThang(txtngayvaolamviec.Text.Trim()));
                p[8].SqlDbType = SqlDbType.SmallDateTime;
                p[9] = new SqlParameter("@NgayKetThucLamViec", ex.GetNgayThang(txtngayketthuclamviec.Text.Trim()));
                p[9].SqlDbType = SqlDbType.SmallDateTime;
                p[10] = new SqlParameter("@NgayTao", DateTime.Now);
                p[10].SqlDbType = SqlDbType.SmallDateTime;
                p[11] = new SqlParameter("@NguoiTao", Session["user"].ToString());
                p[11].SqlDbType = SqlDbType.NVarChar;
                p[12] = new SqlParameter("@Del", 1);
                p[12].SqlDbType = SqlDbType.Int;
                p[13] = new SqlParameter("@TramTron", ex.GetGuid(dlTramTron.SelectedValue));
                p[13].SqlDbType = SqlDbType.UniqueIdentifier;
                p[14] = new SqlParameter("@BaoHiem", ckBaoHiem.Checked ? 1 : 0);
                p[14].SqlDbType = SqlDbType.Int;
                p[15] = new SqlParameter("@ThoiVu", cknhanvienthoivu.Checked ? 1 : 0);
                p[15].SqlDbType = SqlDbType.Int;
                ex.ExecuteNonQuerry("sp_xdanhanvien_Update", p);
                btnCancel_Click(sender, e);
                gstGetMess("Cập nhật thành công", "");
            }
            catch (Exception ax)
            {
                gstGetMess("Có lỗi trong quá trình cập nhật, xem trong file log", "");
                ex.WriteLog(Server.MapPath("Log.txt"), DateTime.Now.ToString() + "\tNhân viên\t" + ax.Message);
            }
        }
        else
            gstGetMess("Bạn không có quyền sửa dữ liệu trên trang này", "");
    }
    protected void btnCancel_Click(object sender, EventArgs e)
    {
        GV.DataSource = ex.GetData("sp_xdanhanvien_List");
        GV.DataBind();
        txttennhanvien.Text = "";
        txtdiachi.Text = "";
        txtcmt.Text = "";
        txtngaycap.Text = "";
        txtnoicap.Text = "";
        txtngayvaolamviec.Text = "";
        txtngayketthuclamviec.Text = "";
        cknhanvienthoivu.Checked = false;
        ckBaoHiem.Checked = false;

        drChucVu.SelectedIndex = 0;
        drBophan.SelectedIndex = 0;
        dlTramTron.SelectedIndex = 0;
        
        btnSave.Visible = true;
        btncapnhat.Visible = false;
    }
    private void gstGetMess(string gstMess, string gstLink)
    {
        if (gstLink == "")
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "alert('" + gstMess + "')", true);
        else
            ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "alert('" + gstMess + "');window.location.href='" + gstLink + "'", true);

    }
    void LoadChucVu()
    {
        drChucVu.Items.Clear();
        drChucVu.DataSource = ex.GetData("sp_xdachucvu_ListDrop");
        drChucVu.DataBind();
        drChucVu.Items.Insert(0, new ListItem("--Chọn chức vụ--", ""));
        drChucVu.SelectedIndex = 0;
    }
    void LoadTramTron(DropDownList drChucVu)
    {
        drChucVu.Items.Clear();
        drChucVu.DataSource = ex.GetData("sp_xdatramtron_ListDrop");
        drChucVu.DataBind();
        drChucVu.Items.Insert(0, new ListItem("--Chọn trạm trộn--", ""));
        drChucVu.SelectedIndex = 0;
    }
    void LoadChucVuTimKiem()
    {
        tkDrChucVu.Items.Clear();
        tkDrChucVu.DataSource = ex.GetData("sp_xdachucvu_ListDrop");
        tkDrChucVu.DataBind();
        tkDrChucVu.Items.Insert(0, new ListItem("--Chọn chức vụ--", ""));
        tkDrChucVu.SelectedIndex = 0;
    }
    void LoadBoPhan()
    {
        drBophan.Items.Clear();
        drBophan.DataSource = ex.GetData("sp_xdabophan_ListDop");
        drBophan.DataBind();
        drBophan.Items.Insert(0, new ListItem("--Chọn bộ phận--", ""));
        drBophan.SelectedIndex = 0;
    }
    void LoadBoPhanTimKiem()
    {
        tkDrBoPhan.Items.Clear();
        tkDrBoPhan.DataSource = ex.GetData("sp_xdabophan_ListDop");
        tkDrBoPhan.DataBind();
        tkDrBoPhan.Items.Insert(0, new ListItem("--Chọn bộ phận--", ""));
        tkDrBoPhan.SelectedIndex = 0;
    }
    public object GetGuidDrop(DropDownList dl)
    {
        try
        {
            if (dl.SelectedValue == "") return DBNull.Value;
            else
            {
                Guid ID = new Guid(dl.SelectedValue);
                return ID;
            }
        }
        catch
        {
            return DBNull.Value;
        }
    }
    protected void Unnamed1_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (drTk.SelectedIndex == 1)
        {
            tkDrBoPhan.Visible = true;
            LoadBoPhanTimKiem();
            tkDrChucVu.Visible = false;
            txttkTen.Visible = false;
            txttennghiviec.Visible = false;
            btnCancel_Click(sender, e);
        }
        else
            if (drTk.SelectedIndex == 2)
            {
                tkDrBoPhan.Visible = false;
                tkDrChucVu.Visible = true;
                LoadChucVuTimKiem();
                txttennghiviec.Visible = false;
                txttkTen.Visible = false;
                btnCancel_Click(sender, e);
            }
            else
                if (drTk.SelectedIndex == 3)
                {
                    tkDrBoPhan.Visible = false;
                    txttennghiviec.Visible = false;
                    tkDrChucVu.Visible = false;
                    txttkTen.Visible = true;
                    btnCancel_Click(sender, e);
                    txttkTen.Text = "";
                }
                else
                    if (drTk.SelectedIndex == 4)
                    {
                        tkDrBoPhan.Visible = false;
                        txttennghiviec.Visible = true;
                        tkDrChucVu.Visible = false;
                        txttkTen.Visible = false;
                        btnCancel_Click(sender, e);
                        txttkTen.Text = "";
                        txttennghiviec.Text = "";
                    }
                    else
                        if (drTk.SelectedIndex == 0)
                        {
                            tkDrBoPhan.Visible = false;
                            txttennghiviec.Visible = false;
                            tkDrChucVu.Visible = false;
                            txttkTen.Visible = false;
                            btnCancel_Click(sender, e);
                        }
    }
    protected void btnTimkiem_Click(object sender, EventArgs e)
    {

        if (tkDrBoPhan.SelectedIndex > 0)
        {
            p = new SqlParameter[1];
            p[0] = new SqlParameter("@ChucVu", GetGuidDrop(tkDrBoPhan));
            p[0].SqlDbType = SqlDbType.UniqueIdentifier;
            GV.DataSource = ex.GetData("sp_xdanhanvien_ListTimKiem_BoPhan", p);
            GV.DataBind();
        }
        else
            if (tkDrChucVu.SelectedIndex > 0)
            {
                p = new SqlParameter[1];
                p[0] = new SqlParameter("@ChucVu", GetGuidDrop(tkDrChucVu));
                p[0].SqlDbType = SqlDbType.UniqueIdentifier;
                GV.DataSource = ex.GetData("sp_xdanhanvien_ListTimKiem_ChucVu", p);
                GV.DataBind();
            }
            else
                if (txttkTen.Text != "")
                {
                    p = new SqlParameter[1];
                    p[0] = new SqlParameter("@ChucVu", txttkTen.Text.Trim());
                    p[0].SqlDbType = SqlDbType.NVarChar;
                    GV.DataSource = ex.GetData("sp_xdanhanvien_ListTimKiem_TenNhanVien", p);
                    GV.DataBind();
                }
                else
                    if (txttennghiviec.Text != "")
                    {
                        p = new SqlParameter[1];
                        p[0] = new SqlParameter("@ChucVu", txttennghiviec.Text.Trim());
                        p[0].SqlDbType = SqlDbType.NVarChar;
                        GV.DataSource = ex.GetData("sp_xdanhanvien_ListTimKiem_NghiViec", p);
                        GV.DataBind();
                    }

    }
}